home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Games Machine 76
/
XENIATGM66.iso
/
Indiana Jones
/
Indiana Jones.exe
/
RESOURCE
/
PREVIEW.GOB
/
cog_shw_maindoors.cog
< prev
next >
Wrap
Text File
|
1999-11-15
|
9KB
|
328 lines
# Jones 3D Cog Script
#
# shw_entrance_doors.cog
#
# Main Waterworks Door Script
#
# [CMG]
#
# (C) 1997 LucasArts Entertainment Co. All Rights Reserved
# ========================================================================================
symbols
# MESSAGES
message startup
message activated
message blocked
# ACTORS
thing player local
thing indy
# ACTOR MOVE TARGETS
thing in_mv0
# CAMERAS
thing camPos
thing insideCam
# CAMERA TARGETS
thing MoveCamTarg local
thing MoveCamTarg1 local
thing doortargpos
thing beasttargpos
# PROPS
thing door0 linkid=1
thing door1 linkid=1
thing button0
thing button1
# VARS
float doorspeed=2.0 local
float sleepTime=4.0 local
int open=0 local
int playerpos=0 local
int whichline=0 local
int firsttime=0 local
int snd local
int track local
# SOUNDS
sound click=sol_panel_switch_c.wav local
sound open_squeak=sea_doors_open_c.wav local
sound close_squeak=sea_doors_close_c.wav local
sound in_lockedline1=INXJ092.WAV local
sound in_lockedline2=INXJ096.WAV local
sound in_lockedline3=INXJ098.WAV local
sound in_scaredline=INXJ042.WAV local
sound beast=tem_warrior_roar_c.wav local
sound creepysong=mus_gen_eerie2.wav local
# KEYFRAMES
keyframe in_hat=0in_figithat_4_4.key local
keyframe in_brush=0in_stand1_bd_4.key local
keyframe in_stand4=0in_stand4.key local
# SECTORS
sector doorSector local
# VECTORS
vector CamTargPos local
vector CamTargPos1 local
# TEMPLATES
template ghostTpl=ghost local
end
# ========================================================================================
code
startup:
player = GetLocalPlayerThing();
doorSector = GetThingSector(door0);
SetSectorAdjoins(doorSector, 0);
return;
# ........................................................................................
# ........................................................................................
activated:
if (open == 1) return;
if (IsThingMoving(door0)) return;
if (GetSenderRef() == button0)
{
If (firsttime == 0)
{
call grandopening;
firsttime = 1;
return;
}
SetActorFlags(player, 0x200000);
DeselectWeapon(player); # stow any weapon or lighter
Sleep(0.25); # wait a beat
open = 1;
SetSectorAdjoins(doorSector, 1);
PlayMode(player, 60, 0);
Sleep(0.5);
ClearActorFlags(player, 0x200000);
MoveToFrame(button0, 1, 1);
MoveToFrame(button1, 1, 1);
PlaySoundThing(click, button0, 1, 3, 10, 0x0);
Sleep(0.25);
Rotate(door0, -90, 1, doorspeed);
Rotate(door1, 90, 1, doorspeed);
PlaySoundThing(open_squeak, door0, 1, 3, 10, 0x0);
waitforstop(door0);
sleep(sleeptime);
Rotate(door0, 90, 1, doorspeed);
Rotate(door1, -90, 1, doorspeed);
PlaySoundThing(close_squeak, door0, 1, 3, 10, 0x0);
waitforstop(door0);
PlaySoundThing(click, door0, 1, 3, 10, 0x0);
MoveToFrame(button0, 0, 4);
MoveToFrame(button1, 0, 4);
SetSectorAdjoins(doorSector, 0);
open = 0;
return;
}
if (GetSenderRef() == button1)
{
SetActorFlags(player, 0x200000);
DeselectWeapon(player); # stow any weapon or lighter
Sleep(0.25); # wait a beat
open = 1;
SetSectorAdjoins(doorSector, 1);
PlayMode(player, 60, 0);
Sleep(0.5);
ClearActorFlags(player, 0x200000);
MoveToFrame(button0, 1, 1);
MoveToFrame(button1, 1, 1);
PlaySoundThing(click, button1, 1, 3, 10, 0x0);
Sleep(0.25);
Rotate(door0, 90, 1, doorspeed);
Rotate(door1, -90, 1, doorspeed);
PlaySoundThing(open_squeak, door0, 1, 3, 10, 0x0);
waitforstop(door0);
sleep(sleeptime);
Rotate(door0, -90, 1, doorspeed);
Rotate(door1, 90, 1, doorspeed);
PlaySoundThing(close_squeak, door0, 1, 3, 10, 0x0);
waitforstop(door0);
PlaySoundThing(click, door0, 1, 3, 10, 0x0);
MoveToFrame(button0, 0, 4);
MoveToFrame(button1, 0, 4);
SetSectorAdjoins(doorSector, 0);
open = 0;
}
If (GetSenderID() == 1)
{
open = 1;
whichline=RANDBETWEEN(1,3);
If (whichline == 1)
{
PlayVoice(player, in_lockedline1, 1, 0);
}
If (whichline == 2)
{
PlayVoice(player, in_lockedline2, 1, 0);
}
If (whichline == 3)
{
PlayVoice(player, in_lockedline3, 1, 0);
}
PlayMode(player, 60, 1);
open = 0;
}
return;
# ........................................................................................
blocked:
print("wtf?");
return;
# ........................................................................................
grandopening:
curCam = GetCurrentCamera();
StartCutScene(1);
#open = 1;
SetCameraLookInterp(2, 0);
SetCameraPosInterp(2, 0);
DeselectWeapon(player); # stow any weapon or lighter
Sleep(0.25); # wait a beat
CopyPlayerHolsters(player, indy); # make sure actor has matching props
SetThingFlags(player, 0x80000);
ClearThingFlags(indy, 0x80000);
# Line Indy up...
CopyOrientAndPos(player, indy);
AISetLookThingEyeLevel(indy, button0);
AIWaitForStop(indy);
# Slew follow camera to observe the scene from a known position
SetExtCamOffsetToThing(camPos);
# setup a ghost object target
CamTargPos = VectorAdd(VectorTransformToOrient(indy, '0.0 0.0 0.05'), GetThingPos(indy));
MoveCamTarg = CreateThingAtPos(ghostTpl, GetThingSector(indy), CamTargPos, '0 0 0');
CaptureThing(MoveCamTarg);
# offset camera look target to thing.
SetExtCamLookOffsetToThing(MoveCamTarg);
# open the door
PlayMode(indy, 60, 0);
Sleep(1.0);
#MoveToFrame(button0, 1, 1);
#MoveToFrame(button1, 1, 1);
#PlaySoundThing(click, button0, 1, 3, 10, 0x0);
# go to camera 2
SetCameraFocus(2, camPos);
SetCameraSecondaryFocus(2, MoveCamTarg);
SetCurrentCamera(2);
SetCameraFOV(90, 0, 0);
# set sector adjoins to draw
SetSectorAdjoins(doorSector, 1);
# open the doors
#Rotate(door0, -90, 1, doorspeed);
#Rotate(door1, 90, 1, doorspeed);
# eerie music cue as door opens
PlaySoundLocal(creepysong, 1.0, 0.0, 0x0, 0);
#PlaySoundThing(open_squeak, door0, 1, 3, 10, 0x0);
# move camera focus object up to door
animId = MoveThingToPos(MoveCamTarg, GetThingPos(doortargpos), 3.0);
# indy actor looks as door opens
AISetLookThingEyeLevel(indy, in_mv0);
Sleep(1.0);
# indy actor moves into the room
AISetMoveSpeed(indy, 1.5);
AISetMoveThing(indy, doortargpos, 0);
Sleep(2.0);
AISetMoveThing(indy, in_mv0, 0);
# setup a ghost object target 1 METER ABOVE THE IN_MV0
CamTargPos1 = VectorAdd(VectorTransformToOrient(indy, '0.0 0.0 0.05'), GetThingPos(indy));
MoveCamTarg1 = CreateThingAtPos(ghostTpl, GetThingSector(indy), CamTargPos1, '0 0 0');
CaptureThing(MoveCamTarg1);
# attach MoveCamTarg1 to indy at 1 meter Z offset
AttachThingToThing(MoveCamTarg1, indy);
# switch to inside camera focus on indy
SetCameraFocus(2, insideCam);
SetCameraSecondaryFocus(2, MoveCamTarg1);
MovetoFrame(insideCam, 1, 1.0);
Sleep(4.0);
# play indy's anims and voice line
track = PlayKey(indy, in_Stand4, 2, 0x0, 0);
PlayKey(indy, in_brush, 4, 0x12, 1);
snd = PlayVoice(indy, in_scaredline, 1.0, 0);
PlayKey(indy, in_hat, 4, 0x12, 0);
# detach the camtarget and move it to the beasttarget
DetachThing(MoveCamTarg1);
Sleep(1.0);
# move the moveable camera target to beasttargetpos
animId = MoveThingToPos(MoveCamTarg1, GetThingPos(beasttargpos), 4.0);
Sleep(1.0);
# the beast screams
PlaySoundLocal(beast, 1.0, 0.0, 0x0, 0);
Sleep(2.0);
# close the doors
Sleep(0.5);
#Rotate(door0, 90, 1, doorspeed);
#Rotate(door1, -90, 1, doorspeed);
#PlaySoundThing(close_squeak, door0, 1, 3, 10, 0x0);
#waitforstop(door0);
#PlaySoundThing(click, door0, 1, 3, 10, 0x0);
#MoveToFrame(button0, 0, 4);
#MoveToFrame(button1, 0, 4);
#SetSectorAdjoins(doorSector, 0);
#open = 0;
# restore player to indy's position
CopyOrientAndPos(indy, player);
SetThingFlags(indy, 0x80000);
ClearThingFlags(player, 0x80000);
SetCameraLookInterp(2, 0);
SetcameraPosition(1, GetThingPos(insideCam));
SetCurrentCamera(1);
RestoreExtCam();
EndCutScene();
return;
end